#pragma once
#include <mutex> //互斥量
#include <unordered_map>
using namespace std;

// 文件元数据类  饿汉单例 线程安全
class FileMetaData
{
private:
    FileMetaData();

public:
    ~FileMetaData();
    // 获取实例
    static FileMetaData *getInstance()
    {
        return globalInstance;
    }
    // 插入一条文件元数据
    void add(const string &fileID, const string &data);
    // 删除一条文件元数据
    void remove(const string &fileID);
    // 获取文件元数据
    string getFMData(const string &fileID);

private:
    static FileMetaData *globalInstance;  // 全局唯一实例
    unordered_map<string, string> fmData; // 文件元数据
    mutex m_mutex;                        // 互斥量
};